package org.wheel.plugins.toolkit.sql.page.impl;

import cn.hutool.core.map.MapUtil;
import org.wheel.plugins.toolkit.sql.page.BuiltinPaginationStrategy;
import org.wheel.plugins.toolkit.sql.page.PaginationStrategy;

import java.util.Map;

/**
 * 分页策略扩展入口 – 插件开发人员可自行扩展
 * 外部 JAR 仅需：
 * <pre>{@code
 * META-INF/services/org.xxx.PageStrategy
 * 内容：com.your.OracleNewPageStrategy
 *
 * * 保留 PageStrategy 接口，外部 JAR 只需：
 *  1. 实现 PageStrategy；
 *  2. META-INF/services 注册；
 *  3. 调用 PageStrategyRegistry.register("myDialect", new MyPageStrategy()) 即可生效。
 * * 内置 BuiltinPageStrategy 仅作默认，不阻断扩展。
 * }</pre>
 */
public final class PageStrategyRegistry {
    private static final Map<String, PaginationStrategy> EXTENSIONS = MapUtil.newConcurrentHashMap();

    public static void register(String name, PaginationStrategy strategy) {
        EXTENSIONS.put(name, strategy);
    }
    public static PaginationStrategy resolve(String name) {
        return EXTENSIONS.getOrDefault(name, BuiltinPaginationStrategy.valueOf(name.toUpperCase()));
    }
}